// 1.验证用户登录
import axios from 'axios'
const baseURL = 'http://localhost:8888/api/private/v1/'
// 什么是基准RUL:我们的请求就是路由名称,但是这个路由要基于服务器,设置基准路劲的目的就是能够先找到对应的服务器,再匹配它里面设置的路由
axios.defaults.baseURL = baseURL

// 添加请求拦截器 不是我们来调用的,而是axios自动调用的
axios.interceptors.request.use(function (config) {
  // 在请求发送之前你想做的事情
  // 1.我们要将token这个值通过请求头的方式传递给服务器
  // 获取token
  var token = localStorage.getItem('mytoken')
  // 4.1 判断是否有token值
  if (token) {
    // 2.将值传递给服务器
    // 打印config
    // console.log(config):Authorization是后台接口与前台调用约定好的值,不能随意修改
    config.headers['Authorization'] = token
  }
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})

// 1.实现用户登录验证
export const login = (params) => {
  // return返回axios函数,在Ligon.vue调用该函数
  return axios.post('login', params)
    .then((result) => {
      // 返回result返回值
      return result.data
    })
}

// 2.获取用户列表
export const getUserList = (pa) => {
  return axios.get('users', pa)
    .then((result) => {
      return result.data
    })
}

// 3.实现用户数据的添加
export const addUser = (params) => {
  return axios.post('users', params)
    .then((result) => {
      return result.data
    })
}

// 4.实现用户数据的编辑
export const editUser = (params) => {
  console.log(params)
  // params是一个对象,对象.属性的传入
  return axios.put(`users/${params.id}`, params)
    .then((result) => {
      return result.data
    })
}

// 5.实现用户删除的操作
export const DeleteUser = (id) => {
  // params是一个对象,对象.属性的传入 id:该id参数已经是一个数字了,所以不用再对象.属性的操作
  return axios.delete(`users/${id}`)
    .then((result) => {
      return result.data
    })
}

// 6.获取角色列表
export const getRolesList = () => {
  return axios.get('roles')
    .then((result) => {
      return result.data
    })
}

// 7.实现分配用户角色
export const grantUser = (params) => {
  return axios.put(`users/${params.id}/role`, {rid: params.rid})
    .then((result) => {
      return result.data
    })
}

// 8.实现用户状态的编辑
export const changeuserstate = (params) => {
  console.log(params)
  // params是一个对象,对象.属性的传入
  return axios.put(`users/${params.uid}/state/${params.type}`)
    .then((result) => {
      return result.data
    })
}

// 9.获取权限列表数据
export const getRightList = (params) => {
  return axios.get(`rights/${params.type}`)
    .then((result) => {
      return result.data
    })
}

// 10.实现角色权限的分配
// roleId:当前角色的id
// rids:他是一个对象,健就是rids,值是以 "," 分割的权限ID列表--字符串:{rids:'1,2,3,4,5,'}
export const grantroleright = (roleId, rids) => {
  return axios.post(`roles/${roleId}/rights`, rids)
    .then((result) => {
      return result.data
    })
}

// 11.实现添加角色
export const addRole = (params) => {
  return axios.post('roles', params)
    .then((result) => {
      return result.data
    })
}

// 12.删除角色指定权限
export const deleteroleright = (roleId, rightId) => {
  return axios.delete(`roles/${roleId}/rights/${rightId}`)
    .then((result) => {
      return result.data
    })
}

// 13.实现用户数据的添加
export const getmenus = (params) => {
  return axios.get('menus')
    .then((result) => {
      return result.data
    })
}

// 14.获取商品数据列表
export const getCategories = (pa) => {
  return axios.get(`categories`, {params: pa})
    .then((result) => {
      return result.data
    })
}

// 15.实现添加分类
export const addCategories = (pa) => {
  return axios.post(`categories`, pa)
    .then((result) => {
      return result.data
    })
}

// 16.删除角色指定权限
export const deleteCategories = (id) => {
  return axios.delete(`categories/${id}`)
    .then((result) => {
      return result.data
    })
}

// 17.根据id查询分类
export const editCategories = (id) => {
  return axios.get(`categories/${id}`)
    .then((result) => {
      return result.data
    })
}

// 18.编辑提交分类
export const editCategorieslist = (params) => {
  return axios.put(`categories/${params.pid}`, {cat_name: params.cat_name})
    .then((result) => {
      return result.data
    })
}

// 1.4.5 19.删除角色
export const deleterole = (id) => {
  return axios.delete(`roles/${id}`)
    .then((result) => {
      return result.data
    })
}

// 1.4.4. 20.编辑提交角色
export const editroles = (params) => {
  return axios.put(`roles/${params.id}`, params)
    .then((result) => {
      return result.data
    })
}

// 21.获取商品数据列表
export const getGoods = (pa) => {
  return axios.get(`goods`, { params: pa })
    .then((result) => {
      return result.data
    })
}

// 1.7.2 22.编辑提交角色
export const addGoods = (params) => {
  return axios.post(`goods`, params)
    .then((result) => {
      return result.data
    })
}

// 1.7.5 23.删除商品
export const delgoods = (id) => {
  return axios.delete(`goods/${id}`)
    .then((result) => {
      return result.data
    })
}
